Lewati ke konten utama

Manajemen repositori remote dan lokal

Gagasan Besar: Tidak Ada Server Pusat​

Berbeda dengan sistem kontrol versi lama, Git tidak memerlukan satu repositori pusat.

Setiap developer:

  • Memiliki salinan penuh repositori
  • Dapat bekerja secara offline
  • Dapat berbagi perubahan saat sudah siap

Mengapa Banyak Repositori Masuk Akal​

Repositori terpisah berguna ketika:

  • Seorang developer bekerja sendiri
  • Tim tersebar di lokasi yang berbeda
  • Fitur eksperimental atau jangka panjang perlu diisolasi

Git menangani ini dengan sangat baik karena sangat kuat dalam branching dan merging.


Operasi Utama Repositori Remote​

AksiFungsinyaPerintah
CloneMenyalin repositorigit clone
FetchMengunduh pembaruan (tanpa merge)git fetch
PullMengunduh + merge pembaruangit pull
PushMengunggah perubahan Andagit push
PublishMembuat repo tersedia untuk orang lain(setup server)

Apa Itu Tracking Branch?​

Sebuah tracking branch adalah referensi lokal ke branch remote.

Contoh:

  • origin/main → branch remote
  • main → branch lokal Anda

Git menggunakan tracking branch untuk mengetahui:

  • Apa yang berubah di remote
  • Apa yang bisa Anda pull atau push

Bare Repository​

Sebuah bare repository:

  • Tidak memiliki working directory
  • Tidak bisa diedit secara langsung
  • Digunakan hanya untuk push, pull, dan clone
info

Paling cocok untuk repositori bersama atau server
Tidak digunakan untuk pengembangan

Membuatnya dengan:

git clone --bare my-project my-project.git

Melakukan Clone Repositori​

Clone dasar:

git clone https://example.com/project.git

Ini akan:

  • Mengunduh seluruh riwayat
  • Membuat working directory
  • Dilakukan satu kali

Protokol Clone yang Umum​

Git mendukung banyak cara koneksi:

  • https:// → paling umum, paling mudah
  • ssh:// → aman, bagus untuk push
  • git:// → cepat, hanya baca
  • file:// → mesin lokal

Gunakan HTTPS atau SSH kecuali Anda benar-benar tahu membutuhkan yang lain.


Optimasi Clone Lokal​

Jika Anda men-clone repositori lokal, Git dapat menggunakan hard link untuk menghemat ruang.

Nonaktifkan jika perlu:

git clone --no-hardlinks source target

Melihat Referensi Repositori​

Menampilkan referensi lokal:

git show-ref

Menampilkan referensi remote:

git ls-remote https://example.com/project.git

Ini membantu Anda melihat:

  • Branch
  • Tag
  • Pointer HEAD

Menjaga Repositori Tetap Terbarui​

Cara paling aman:

git fetch
git merge origin/main

Jalan pintas:

git pull
peringatan

git pull = fetch + merge

Mempublikasikan Repositori Sendiri​

Langkah 1: Membuat Bare Repo​

git clone --bare my-project /tmp/my-project.git

Langkah 2: Clone oleh Pengguna Lokal​

git clone /tmp/my-project.git my-copy

Langkah 3: Akses Jaringan (Git Daemon)​

Aktifkan ekspor:

touch /tmp/my-project.git/git-daemon-export-ok

Jalankan daemon:

git daemon &

Pengguna sekarang dapat melakukan clone:

git clone 192.168.1.100:/tmp/my-project.git

Mengizinkan Akses Push​

peringatan

Hanya untuk lingkungan terpercaya.

Global:

git daemon --enable=receive-pack

Konfigurasi per-repositori:

[daemon]
receivepack = true

Mempublikasikan Melalui HTTP / HTTPS​

Kebutuhan:

  • Web server (Apache, Nginx)
  • Pengetahuan dasar konfigurasi server

Menyiapkan repo:

git --bare update-server-info

Contoh clone:

git clone https://server/git-test
git clone https://server/~username/git-test

Berbagi Tanpa Git (Arsip)​

Membuat snapshot terkompresi:

git archive HEAD | bzip2 > project.tar.bz2

Mengarsipkan versi tertentu:

git archive v1.7.1 | bzip2 > project_v1.7.1.tar.bz2
  • Tidak menyertakan direktori .git
  • Cocok untuk rilis atau backup

Fetch vs Pull vs Push​

Fetch (Aman)​

git fetch
  • Mengunduh perubahan
  • TIDAK mengubah branch Anda

Pull (Fetch + Merge)​

git pull origin main

Push (Mengunggah Pekerjaan Anda)​

git push origin main
peringatan

Selalu push ke bare repository



info

Kesalahan Umum Pemula (Termasuk saya :D)

  • Push ke repo non-bare
  • Pull tanpa meng-commit perubahan lokal
  • Rebase branch bersama
  • Menggunakan git pull tanpa memahaminya

Aturan Praktis

  • Gunakan bare repo untuk server
  • Gunakan fetch jika ingin aman
  • Gunakan pull jika ingin cepat
  • Push hanya kode yang bersih dan sudah di-commit
  • Utamakan HTTPS atau SSH